// 导入path模块，用于处理文件路径
const path = require("path");

// 导入json插件，用于解析json文件
const json = require("@rollup/plugin-json");
// 导入babel插件，用于编译ES6+代码
const { babel } = require("@rollup/plugin-babel");

// 定义一个函数来拼接文件路径
/**
 * 将给定的文件路径与当前工作目录路径进行拼接
 * @param {string} filePath - 需要拼接的文件路径
 * @returns {string} 拼接后的完整文件路径
 */
const resolveFile = function (filePath) {
  return path.join(__dirname, filePath);
};

// 配置rollup构建所需的插件
const plugins = [
  // 配置json插件，禁用json文件的空格缩进
  json({
    compact: true,
  }),
  // 配置babel插件，指定需要编译的文件扩展名和babel预设
  babel({
    extensions: [".js", ".ts"],
    presets: [
      [
        "@babel/preset-env",
        {
          targets: {
            browsers: ["> 1%", "last 2 versions", "not ie <= 8"],
          },
        },
      ],
    ],
    babelHelpers: "bundled", // 显式指定
  }),
];

// 导出构建配置数组，每个配置项对应一个输出目标
module.exports = [
  {
    // 使用前面定义的插件数组
    plugins,
    // 指定输入文件路径
    input: resolveFile("../src/webEyeSDK.js"),
    // 配置输出文件，格式为立即执行函数表达式(iife)
    output: {
      file: resolveFile("../dist/monitor.js"),
      format: "iife",
      name: "monitor",
      sourcemap: true,
    },
  },
  {
    // 使用前面定义的插件数组
    plugins,
    // 指定输入文件路径
    input: resolveFile("../src/webEyeSDK.js"),
    // 配置输出文件，格式为ES模块(esm)
    output: {
      file: resolveFile("../dist/monitor.esm.js"),
      format: "esm",
      name: "monitor",
      sourcemap: true,
    },
  },
  {
    // 使用前面定义的插件数组
    plugins,
    // 指定输入文件路径
    input: resolveFile("../src/webEyeSDK.js"),
    // 配置输出文件，格式为CommonJS(cjs)
    output: {
      file: resolveFile("../dist/monitor.cjs.js"),
      format: "cjs",
      name: "monitor",
      sourcemap: true,
    },
  },
];
